home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / hc / timekeep.sit / Master Client List / background_3675.txt < prev    next >
Text File  |  1987-11-07  |  18KB  |  699 lines

  1. -- background: 3675 from stack: in
  2. -- bmap block id: 2165
  3. -- flags: 4000
  4. -- background id: 0
  5. -- name: Client Card
  6.  
  7.  
  8. -- part 1 (field)
  9. -- low flags: 00
  10. -- high flags: 4000
  11. -- rect: left=112 top=77 right=105 bottom=350
  12. -- title width / last selected line: 0
  13. -- icon id / first selected line: 0 / 0
  14. -- text alignment: 0
  15. -- font id: 3
  16. -- text size: 10
  17. -- style flags: 0
  18. -- line height: 13
  19. -- part name: Client Name
  20. ----- HyperTalk script -----
  21. on closeField
  22.   scanForOldClient
  23. end closeField
  24.  
  25. -- SCAN EXISTING CARDS TO SEE IF AN ACCOUNT FOR THIS CLIENT ALREADY
  26. -- EXISTS. IF SO, THEN SKIP CONFLICTS PROCEDURE AND INCREMENT
  27. -- EXISTING ACCOUNT NUMBER BY 1 TO ASSIGN NEW SUBACCOUNT.
  28.  
  29. on scanForOldClient
  30.  
  31.   global temp1,temp2,adrs,tphone
  32.   set cursor to 4
  33.   set lockScreen to true
  34.  
  35.   show msg at 17,246
  36.   put "Now searching stack to see if this is an existing client"
  37.   put line 1 of field "Client Name" into oldClient
  38.   push card
  39.   put "abcd" into temp1
  40.   put 1 into temp2
  41.   repeat with y = 2 to the number of cards -1
  42.     go to card y
  43.     if line 1 of field "Client Name" contains oldClient then
  44.       put field "Client Number" into temp1
  45.       put field "Address" into adrs
  46.       put field "Phone" into tphone
  47.       set numberFormat to 000
  48.       add 1 to temp2
  49.     end if
  50.   end repeat
  51.   pop card
  52.   if temp1 contains "abcd" then
  53.     scanForConflicts -- no account yet for this client
  54.   else
  55.     assignNewSubaccount -- account already exists
  56.   end if
  57. end scanForOldClient
  58.  
  59. -- HAVEN'T FOUND AN EXISTING ACCOUNT FOR THIS CLIENT;
  60. -- SCAN ADVERSE PARTY FIELD OF ALL PREVIOUS CARDS FOR CONFLICTS
  61.  
  62. on scanForConflicts
  63.   set cursor to 4
  64.   set lockScreen to false
  65.   push card
  66.   repeat with i = 1 to the number of words of field "Client Name"
  67.     show msg at 17,246
  68.     put word i of field "Client Name" into conflict
  69.     if conflict contains "Mr." or conflict contains "Mrs." or conflict contains "Miss" or conflict contains "Ms." or conflict contains "and" or conflict contains "of" then next repeat
  70.     put "Searching for conflict with:" && quote & conflict & quote
  71.     repeat with j = 2 to the number of cards
  72.       go to card j
  73.       if conflict is in field "Adverse" then
  74.         beep 3
  75.         put "Conflict found with:" && quote & conflict & quote into msg
  76.         wait 1 seconds
  77.         put "NOTE: Answering " & quote & "No" & quote & " will delete new card"
  78.         answer "Do you want to continue search for conflicts?" with "No" or "Yes"
  79.         if it is "No" then
  80.           pop card
  81.           doMenu Delete Card
  82.           hide msg
  83.           exit scanForConflicts
  84.         else
  85.           put "Searching for conflict with:" && quote & conflict & quote
  86.           next repeat
  87.         end if
  88.       else
  89.         next repeat
  90.       end if
  91.     end repeat
  92.   end repeat
  93.   pop card
  94.   assignClientNumber
  95. end scanForConflicts
  96.  
  97. -- NO CONFLICTS FOUND WITH NEW CLIENT; ASSIGN A NEW ACCOUNT NUMBER
  98.  
  99. on assignClientNumber -- format is xxyy.zzz
  100.   put "Now assigning a new account number to this client"
  101.   if word 1 of field "Client Name" contains "Mr" or word 1 of field "Client Name" contains "Ms" or word 1 of field "Client Name" contains "Miss" then
  102.     put char 1 of last word of field "Client Name" into temp3
  103.   else
  104.     put char 1 of line 1 of field "Client Name" into temp3
  105.   end if
  106.   set numberFormat to 00
  107.   put the charToNum of temp3 - 64 into temp3 -- ASCII equivalent
  108.   set numberFormat to 00
  109.   put the number of cards-1 into temp4 -- number accounts consecutively
  110.   add 0 to temp4
  111.   put temp3 & temp4 & ".001" into field "Client Number" -- subaccount #
  112.   hide msg
  113.   set the name of this card to field "Client Number"
  114. end assignClientNumber
  115.  
  116. on assignNewSubaccount
  117.   global temp1,temp2,adrs,tphone
  118.   put "Now assigning a new subaccount number for this client"
  119.   repeat 3 times
  120.     delete last char of temp1 -- strip subaccount numbers
  121.   end repeat
  122.   put temp1 & temp2 into field "Client Number"
  123.   -- temp1 is existing account number; temp2 # of existing subaccounts+1
  124.   put adrs into field "Address"
  125.   put tphone into field "Phone"
  126.   hide msg
  127.   set the name of this card to field "Client Number"
  128. end assignNewSubaccount
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135. -- part 3 (field)
  136. -- low flags: 01
  137. -- high flags: 4000
  138. -- rect: left=423 top=44 right=58 bottom=493
  139. -- title width / last selected line: 0
  140. -- icon id / first selected line: 0 / 0
  141. -- text alignment: 0
  142. -- font id: 3
  143. -- text size: 10
  144. -- style flags: 0
  145. -- line height: 13
  146. -- part name: Client Number
  147. ----- HyperTalk script -----
  148.  
  149.  
  150.  
  151.  
  152. -- part 4 (field)
  153. -- low flags: 00
  154. -- high flags: 4000
  155. -- rect: left=112 top=113 right=166 bottom=350
  156. -- title width / last selected line: 0
  157. -- icon id / first selected line: 0 / 0
  158. -- text alignment: 0
  159. -- font id: 3
  160. -- text size: 10
  161. -- style flags: 0
  162. -- line height: 13
  163. -- part name: Address
  164.  
  165.  
  166. -- part 5 (field)
  167. -- low flags: 00
  168. -- high flags: 4000
  169. -- rect: left=112 top=177 right=191 bottom=349
  170. -- title width / last selected line: 0
  171. -- icon id / first selected line: 0 / 0
  172. -- text alignment: 0
  173. -- font id: 3
  174. -- text size: 10
  175. -- style flags: 0
  176. -- line height: 13
  177. -- part name: Phone
  178.  
  179.  
  180. -- part 6 (field)
  181. -- low flags: 00
  182. -- high flags: 4000
  183. -- rect: left=112 top=196 right=210 bottom=350
  184. -- title width / last selected line: 0
  185. -- icon id / first selected line: 0 / 0
  186. -- text alignment: 0
  187. -- font id: 3
  188. -- text size: 10
  189. -- style flags: 0
  190. -- line height: 13
  191. -- part name: Matter
  192.  
  193.  
  194. -- part 7 (field)
  195. -- low flags: 00
  196. -- high flags: 4000
  197. -- rect: left=124 top=250 right=264 bottom=350
  198. -- title width / last selected line: 0
  199. -- icon id / first selected line: 0 / 0
  200. -- text alignment: 0
  201. -- font id: 3
  202. -- text size: 10
  203. -- style flags: 0
  204. -- line height: 13
  205. -- part name: Referral
  206.  
  207.  
  208. -- part 9 (field)
  209. -- low flags: 00
  210. -- high flags: 4000
  211. -- rect: left=124 top=267 right=281 bottom=163
  212. -- title width / last selected line: 0
  213. -- icon id / first selected line: 0 / 0
  214. -- text alignment: 0
  215. -- font id: 3
  216. -- text size: 10
  217. -- style flags: 0
  218. -- line height: 13
  219. -- part name: Fee_Quote
  220.  
  221.  
  222. -- part 10 (button)
  223. -- low flags: 00
  224. -- high flags: A003
  225. -- rect: left=358 top=76 right=90 bottom=406
  226. -- title width / last selected line: 0
  227. -- icon id / first selected line: 0 / 0
  228. -- text alignment: 1
  229. -- font id: 3
  230. -- text size: 12
  231. -- style flags: 0
  232. -- line height: 16
  233. -- part name: Sort
  234. ----- HyperTalk script -----
  235. on mouseUp
  236.   sort by field "Client Number"
  237. end mouseUp
  238.  
  239.  
  240.  
  241. -- part 11 (button)
  242. -- low flags: 00
  243. -- high flags: A003
  244. -- rect: left=426 top=76 right=90 bottom=478
  245. -- title width / last selected line: 0
  246. -- icon id / first selected line: 0 / 0
  247. -- text alignment: 1
  248. -- font id: 3
  249. -- text size: 12
  250. -- style flags: 0
  251. -- line height: 16
  252. -- part name: New
  253. ----- HyperTalk script -----
  254. on mouseUp
  255.   go to last card
  256.   doMenu "New Card"
  257. end mouseUp
  258.  
  259.  
  260.  
  261. -- part 13 (button)
  262. -- low flags: 00
  263. -- high flags: A003
  264. -- rect: left=358 top=92 right=108 bottom=480
  265. -- title width / last selected line: 0
  266. -- icon id / first selected line: 0 / 0
  267. -- text alignment: 1
  268. -- font id: 3
  269. -- text size: 12
  270. -- style flags: 0
  271. -- line height: 16
  272. -- part name: Time Slips
  273. ----- HyperTalk script -----
  274. on mouseUp
  275.   go to stack "Time Slips"
  276. end mouseUp
  277.  
  278.  
  279.  
  280.  
  281. -- part 8 (field)
  282. -- low flags: 00
  283. -- high flags: 4000
  284. -- rect: left=151 top=285 right=325 bottom=384
  285. -- title width / last selected line: 0
  286. -- icon id / first selected line: 0 / 0
  287. -- text alignment: 0
  288. -- font id: 3
  289. -- text size: 10
  290. -- style flags: 0
  291. -- line height: 13
  292. -- part name: Adverse
  293. ----- HyperTalk script -----
  294.  
  295.  
  296.  
  297.  
  298. -- part 17 (field)
  299. -- low flags: 01
  300. -- high flags: 4007
  301. -- rect: left=356 top=177 right=248 bottom=490
  302. -- title width / last selected line: 0
  303. -- icon id / first selected line: 0 / 0
  304. -- text alignment: 0
  305. -- font id: 3
  306. -- text size: 9
  307. -- style flags: 0
  308. -- line height: 12
  309. -- part name: Descrip
  310.  
  311.  
  312. -- part 20 (button)
  313. -- low flags: 00
  314. -- high flags: A003
  315. -- rect: left=359 top=126 right=142 bottom=481
  316. -- title width / last selected line: 0
  317. -- icon id / first selected line: 0 / 0
  318. -- text alignment: 1
  319. -- font id: 3
  320. -- text size: 12
  321. -- style flags: 0
  322. -- line height: 16
  323. -- part name: Adjust Fees
  324. ----- HyperTalk script -----
  325. on mouseUp
  326.   ask "Please enter new hourly rate:" with "125"
  327.   put it into newFee
  328.   if newFee Γëá field "Fee_Quote" then
  329.     set cursor to 4
  330.     set lockScreen to true
  331.     set lockMessages to true
  332.     put newFee into field "Fee_Quote"
  333.     put field "Client Number" into clNum
  334.     push card
  335.     go to stack "Time Slips"
  336.     repeat with x = 2 to the number of cards
  337.       go to card x
  338.       if field "Client Number" contains clNum then
  339.         put newFee into field "Hourly"
  340.         send "computeBill quarterHours" to target
  341.       end if
  342.     end repeat
  343.     pop card
  344.     send mouseUp to bkgnd button "Amt. Due"
  345.     set lockScreen to false
  346.     set lockMessages to false
  347.   end if
  348. end mouseUp
  349.  
  350.  
  351.  
  352. -- part 21 (button)
  353. -- low flags: 00
  354. -- high flags: A003
  355. -- rect: left=359 top=143 right=158 bottom=481
  356. -- title width / last selected line: 0
  357. -- icon id / first selected line: 0 / 0
  358. -- text alignment: 1
  359. -- font id: 3
  360. -- text size: 12
  361. -- style flags: 0
  362. -- line height: 16
  363. -- part name: Amt. Due
  364. ----- HyperTalk script -----
  365. on mouseUp
  366.  
  367.   global accumulateFees,accumulateDisb
  368.  
  369.   put field "Client Number" into clNum
  370.   set cursor to 4
  371.   set lockScreen to true
  372.   set lockMessages to true
  373.   push card
  374.   go to stack "Time Slips"
  375.   put 0 into accumulateFees
  376.   put 0 into accumulateDisb
  377.   repeat with x = 2 to the number of cards
  378.     go to card x
  379.     if field "Client Number" contains clNum then
  380.       set numberFormat to 0.00
  381.       add field "Total Bill" to accumulateFees
  382.     end if
  383.   end repeat
  384.  
  385.   go to stack "Disbursements"
  386.   put 0 into accumulateDisb
  387.   repeat with x = 2 to the number of cards
  388.     go to card x
  389.     if field "Client Number" contains clNum then
  390.       add field "Total Disb" to accumulateDisb
  391.     end if
  392.   end repeat
  393.  
  394.   pop card
  395.   set lockScreen to false
  396.   set lockMessages to false
  397.   put "Balance Outstanding:" into line 1 of field "Descrip"
  398.   put "Fees: $" & accumulateFees into line 2 of field "Descrip"
  399.   put "Disbursements: $" & accumulateDisb into line 3 of field "Descrip"
  400. end mouseUp
  401.  
  402.  
  403. -- part 22 (button)
  404. -- low flags: 00
  405. -- high flags: A003
  406. -- rect: left=360 top=159 right=173 bottom=481
  407. -- title width / last selected line: 0
  408. -- icon id / first selected line: 0 / 0
  409. -- text alignment: 1
  410. -- font id: 3
  411. -- text size: 12
  412. -- style flags: 0
  413. -- line height: 16
  414. -- part name: Prepare Bill
  415. ----- HyperTalk script -----
  416. on mouseUp
  417.  
  418.   global clNumber,atty,hrs,rte,totfees,header,bodyofBill,bodyofDisb, accumulateFees, accumulateDisb
  419.  
  420.   set lockRecent to true
  421.   set lockScreen to true
  422.   set lockMessages to true
  423.   set cursor to 4
  424.  
  425.   get hilite of button "All Bills" of card "Configure"
  426.   if it is true then
  427.     checkConfiguration
  428.   else
  429.     put "false" into atty
  430.     put "false" into hrs
  431.     put "false" into rte
  432.     put "false" into totfees
  433.   end if
  434.   constructHeader
  435.   assembleFees
  436.   assembleDisbursements
  437.   writeBill
  438.  
  439.   set lockRecent to false
  440.   set lockScreen to false
  441.   set lockMessages to false
  442.  
  443.   play boing
  444.  
  445. end mouseUp
  446.  
  447. on checkConfiguration
  448.  
  449.   -- SET FLAGS FOR BILLING FORMAT; APPARENTLY, THIS MUST BE DONE BEFORE
  450.   -- SWITCHING TO ANOTHER STACK
  451.  
  452.   global atty,hrs,rte,totfees
  453.  
  454.   get hilite of button "Hours" of card "Configure"
  455.   if it is true then
  456.     put "true" into hrs
  457.   else
  458.     put "false" into hrs
  459.   end if
  460.  
  461.   get hilite of button "Rate" of card "Configure"
  462.   if it is true then
  463.     put "true" into rte
  464.   else
  465.     put "false" into rte
  466.   end if
  467.  
  468.   get hilite of button "Total Fees" of card "Configure"
  469.   if it is true then
  470.     put "true" into totfees
  471.   else
  472.     put "false" into totfees
  473.   end if
  474.  
  475.   get hilite of button "Attorney" of card "Configure"
  476.   if it is true then
  477.     put "true" into atty
  478.   else
  479.     put "false" into atty
  480.   end if
  481. end checkConfiguration
  482.  
  483. on constructHeader
  484.  
  485.   -- CONSTRUCT LETTERHEAD AND MAILING ADDRESS INFORMATION
  486.  
  487.   global header,clNumber
  488.  
  489.   put return & return & return & tab & tab & tab & "Peter B. Nagel" & return into header
  490.   put tab & tab & tab & "710 Dahlia Street" & return after header
  491.   put tab & tab & tab & "Denver, Colorado  80220" & return after header
  492.   put tab & tab & tab & "CompuServe 75036,3423" & return after header
  493.  
  494.   put field "Client Name" into clName
  495.   put field "Address" into clAddress
  496.   put field "Matter" into clMatter
  497.   put field "Client Number" into clNumber
  498.  
  499.   put return & return & return & clName & tab & tab & "Client Number: " & clNumber & return after header
  500.   put clAddress & return & return after header
  501.  
  502.   put "Re:  " & clMatter & return & return & return after header
  503.  
  504.   put "STATEMENT OF SERVICES RENDERED AS OF " & the long date & ":" & return after header
  505. end constructHeader
  506.  
  507. on assembleFees
  508.  
  509.   -- ASSEMBLE DESCRIPTION OF SERVICES RENDERED AND OUTSTANDING FEES
  510.  
  511.   global clNumber,atty,hrs,rte,totfees,bodyofBill,accumulateFees
  512.  
  513.   push card
  514.   go to stack "Time Slips"
  515.  
  516.   put field "Attorney Name" of card "Cover Card" into attyName
  517.   put 0 into accumulateFees -- needs to be initialized
  518.   set numberFormat to 0.00
  519.   add 0 to accumulateFees -- to trigger number format
  520.   put empty into bodyofBill -- initialization
  521.  
  522.   repeat with x = 2 to the number of cards
  523.     go to card x
  524.     if field "Client Number" contains clNumber then
  525.  
  526.       add field "Total Bill" to accumulateFees
  527.  
  528.       put return & return & field "Date" & ":" & return & field "Narrative" & return after bodyofBill
  529.  
  530.       if atty contains true then -- if "Attorney" format was selected
  531.         put tab & attyName after bodyofBill
  532.       end if
  533.  
  534.       if hrs contains true then -- if "Hours" format was selected
  535.         put space && space && field "Total Time" && "hours" after bodyofBill
  536.       end if
  537.  
  538.       if rte contains true then -- if "Rate" format was selected
  539.         put space && space && "$" & field "Hourly" && "per hour" after bodyofBill
  540.       end if
  541.  
  542.       if totfees contains true then -- if "Fees" format was selected
  543.         put space && space && "$" & field "Total Bill" after bodyofBill
  544.       end if
  545.  
  546.     end if
  547.   end repeat
  548. end assembleFees
  549.  
  550. on assembleDisbursements
  551.  
  552.   -- ASSEMBLE INFORMATION ABOUT EXPENSES INCURRED
  553.  
  554.   global clNumber,bodyofDisb,accumulateDisb
  555.  
  556.   go to stack "Disbursements"
  557.  
  558.   put 0 into accumulateDisb -- needs to be initialized
  559.   set numberFormat to 0.00
  560.   add 0 to accumulateDisb -- to trigger number format
  561.   put empty into bodyofDisb -- initialization
  562.  
  563.   repeat with x = 2 to the number of cards
  564.     go to card x
  565.     if field "Client Number" contains clNumber then
  566.  
  567.       add field "Total Disb" to accumulateDisb
  568.  
  569.       put field "Description" into descripHolder -- don't alter field
  570.       repeat for (40-the number of chars of descripHolder) times
  571.         put space after descripHolder
  572.       end repeat -- extends "Description" field out to 40 characters
  573.       -- so that dollar entries will line up properly
  574.  
  575.       put return & field "Date" & ":" & return & descripHolder & "$" & field "Total Disb" & return & return after bodyofDisb
  576.  
  577.     end if
  578.   end repeat
  579.   pop card
  580. end assembleDisbursements
  581.  
  582. on writeBill
  583.  
  584.   global clNumber,header,bodyofBill,bodyofDisb, accumulateFees,accumulateDisb
  585.  
  586.   --FIRST PUT TOTAL BALANCES DUE IN DESCRIPTION FIELD OF CARD
  587.  
  588.   put "Balance Outstanding:" into line 1 of field "Descrip"  -- just to show balance on client card
  589.   put "Fees: $" & accumulateFees into line 2 of field "Descrip"
  590.   put "Disbursements: $" & accumulateDisb into line 3 of field "Descrip"
  591.  
  592.   --SEND BILLING INFORMATION TO TEXT FILE FOR EDITING
  593.   --NOTE THAT THIS WILL SAVE BILL IN SAME FOLDER AS THIS STACK
  594.  
  595.   get the long name of this stack -- includes full pathname
  596.   put it into preBill
  597.   delete first word of preBill -- deletes "stack"
  598.   delete first char of preBill -- deletes initial ' " '
  599.   delete last char of preBill -- deletes final ' " '
  600.   repeat two times
  601.     delete last word of preBill -- deletes "Client List"
  602.   end repeat
  603.   repeat 6 times
  604.     delete last char of preBill -- deletes "Master"
  605.   end repeat
  606.   put clNumber & " Bill" after preBill -- name of new text document
  607.  
  608.   open file preBill
  609.   write header to file preBill -- starts with client address & matter
  610.   write bodyofBill to file preBill
  611.   write return & return & return & return & "DISBURSEMENTS:" & return & return to file preBill
  612.   write bodyofDisb to file preBill
  613.   write return & return & return & "TOTAL FEES: $" & accumulateFees to file preBill
  614.   write return & return & "TOTAL DISBURSEMENTS: $" & accumulateDisb to file preBill
  615.   write return & return & "TOTAL AMOUNT DUE: $" & accumulateFees + accumulateDisb to file preBill
  616.   close file preBill
  617. end writeBill
  618.  
  619.  
  620.  
  621.  
  622. -- part 24 (button)
  623. -- low flags: 00
  624. -- high flags: A003
  625. -- rect: left=358 top=109 right=125 bottom=481
  626. -- title width / last selected line: 0
  627. -- icon id / first selected line: 0 / 0
  628. -- text alignment: 1
  629. -- font id: 3
  630. -- text size: 12
  631. -- style flags: 0
  632. -- line height: 16
  633. -- part name: Disbursements
  634. ----- HyperTalk script -----
  635. on mouseUp
  636.   go to stack "Disbursements"
  637. end mouseUp
  638.  
  639.  
  640.  
  641.  
  642. -- part 31 (button)
  643. -- low flags: 00
  644. -- high flags: 2000
  645. -- rect: left=468 top=311 right=330 bottom=493
  646. -- title width / last selected line: 0
  647. -- icon id / first selected line: 16560 / 16560
  648. -- text alignment: 1
  649. -- font id: 0
  650. -- text size: 12
  651. -- style flags: 0
  652. -- line height: 16
  653. -- part name: Next
  654. ----- HyperTalk script -----
  655. on mouseUp
  656.   visual effect wipe left
  657.   go to next card
  658. end mouseUp
  659.  
  660.  
  661. -- part 32 (button)
  662. -- low flags: 00
  663. -- high flags: 2000
  664. -- rect: left=14 top=312 right=330 bottom=39
  665. -- title width / last selected line: 0
  666. -- icon id / first selected line: 15420 / 15420
  667. -- text alignment: 1
  668. -- font id: 0
  669. -- text size: 12
  670. -- style flags: 0
  671. -- line height: 16
  672. -- part name: Prev
  673. ----- HyperTalk script -----
  674. on mouseUp
  675.   visual effect wipe right
  676.   go to previous card
  677. end mouseUp
  678.  
  679.  
  680. -- part 33 (button)
  681. -- low flags: 00
  682. -- high flags: A003
  683. -- rect: left=378 top=254 right=270 bottom=459
  684. -- title width / last selected line: 0
  685. -- icon id / first selected line: 0 / 0
  686. -- text alignment: 1
  687. -- font id: 3
  688. -- text size: 12
  689. -- style flags: 0
  690. -- line height: 16
  691. -- part name: Clear All
  692. ----- HyperTalk script -----
  693. on mouseUp
  694.   repeat with x = 1 to the number of fields
  695.     put empty into field x
  696.   end repeat
  697. end mouseUp
  698.  
  699.